/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package UI;

import Logica.Accion;
import Logica.Proyecto;
import Manejadores.ManejadorAcciones;
import Manejadores.ManejadorExportarAExcel;
import Persistencia.ADOAccion;
import Persistencia.Singleton_Sesion;
import java.io.File;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.filechooser.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author marco el capo
 */
public class IAcciones extends javax.swing.JFrame {

    /**
     * Creates new form IAcciones
     */
    ManejadorAcciones manejaAcciones = new ManejadorAcciones();
    private Singleton_Sesion sesion;
    private boolean administrador;

    public IAcciones(boolean admin) {
        initComponents();
        this.administrador = admin;
        this.cargarProyectos(this.sesion.getInstancia().getUsuarioLogueado().getNombreUsuario());
        if (this.gestionarInexsistenciaDeProyectos()) {
        }
        this.jMUsuarios.setEnabled(administrador);
        this.jmProyectos.setEnabled(administrador);
        this.grdAcciones.getTableHeader().setReorderingAllowed(false);
        sesion = Singleton_Sesion.getInstancia();
        if (sesion.getUsuarioLogueado() != null) {
            this.setTitle(this.getTitle() + " - " + sesion.getUsuarioLogueado().getNombreUsuario());
        }
        if (sesion.getUsuarioLogueado().getRol().equalsIgnoreCase("administrador")) {
            this.jMUsuarios.setEnabled(true);
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jMenu2 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        btngrpEstado = new javax.swing.ButtonGroup();
        jComboBox1 = new javax.swing.JComboBox();
        buttonGroup1 = new javax.swing.ButtonGroup();
        buttonGroup2 = new javax.swing.ButtonGroup();
        buttonGroup3 = new javax.swing.ButtonGroup();
        buttonGroup4 = new javax.swing.ButtonGroup();
        buttonGroup5 = new javax.swing.ButtonGroup();
        buttonGroup6 = new javax.swing.ButtonGroup();
        jFCExportarExcel = new javax.swing.JFileChooser();
        jScrollPane1 = new javax.swing.JScrollPane();
        grdAcciones = new javax.swing.JTable();
        lblOrdenar = new javax.swing.JLabel();
        btnActualizarAccion = new javax.swing.JButton();
        lblFiltro = new javax.swing.JLabel();
        jrbAbiertas = new javax.swing.JRadioButton();
        jrbTodas = new javax.swing.JRadioButton();
        lblEstado = new javax.swing.JLabel();
        lblEstado1 = new javax.swing.JLabel();
        jrbSi = new javax.swing.JRadioButton();
        jrbNo = new javax.swing.JRadioButton();
        chkUsuario = new javax.swing.JCheckBox();
        chkVencimiento = new javax.swing.JCheckBox();
        chkReunion = new javax.swing.JCheckBox();
        cmbProyectos = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMFile = new javax.swing.JMenu();
        jMISession = new javax.swing.JMenuItem();
        jMISalir = new javax.swing.JMenuItem();
        jmGestion = new javax.swing.JMenu();
        mnuAcciones = new javax.swing.JMenu();
        mnuAccionesNueva = new javax.swing.JMenuItem();
        jmProyectos = new javax.swing.JMenu();
        jminewProyect = new javax.swing.JMenuItem();
        jMUsuarios = new javax.swing.JMenu();
        jMIVerUsuarios = new javax.swing.JMenuItem();
        jMSalidas = new javax.swing.JMenu();
        jMExportar = new javax.swing.JMenu();
        jMIExcel = new javax.swing.JMenuItem();
        jMIExportarTodas = new javax.swing.JMenuItem();
        jMReportesMetricas = new javax.swing.JMenu();
        jMIReporte = new javax.swing.JMenuItem();
        jMIMétricas = new javax.swing.JMenuItem();

        jMenu2.setText("jMenu2");

        jMenuItem1.setText("jMenuItem1");

        jMenuItem2.setText("jMenuItem2");

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        jFCExportarExcel.setDialogType(javax.swing.JFileChooser.SAVE_DIALOG);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Acciones");
        setLocationByPlatform(true);
        setMaximizedBounds(new java.awt.Rectangle(0, 0, 0, 0));
        setMinimumSize(new java.awt.Dimension(512, 367));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
        });

        grdAcciones.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        grdAcciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "Nombre", "Descripcion", "Usuario", "Vencimiento", "Estado"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(grdAcciones);

        lblOrdenar.setText("Ordenar por:");

        btnActualizarAccion.setText("Actualizar Estado/Añadir Comentario");
        btnActualizarAccion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnActualizarAccionActionPerformed(evt);
            }
        });

        lblFiltro.setText("Filtrar por:");

        btngrpEstado.add(jrbAbiertas);
        jrbAbiertas.setText("Abiertas");
        jrbAbiertas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jrbAbiertasActionPerformed(evt);
            }
        });

        btngrpEstado.add(jrbTodas);
        jrbTodas.setText("Todas");
        jrbTodas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jrbTodasActionPerformed(evt);
            }
        });

        lblEstado.setText("Estado");

        lblEstado1.setText("Usuario: ");

        buttonGroup2.add(jrbSi);
        jrbSi.setText("Si");
        jrbSi.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jrbSiActionPerformed(evt);
            }
        });

        buttonGroup2.add(jrbNo);
        jrbNo.setText("No");
        jrbNo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jrbNoActionPerformed(evt);
            }
        });

        chkUsuario.setText("Usuarios");
        chkUsuario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkUsuarioActionPerformed(evt);
            }
        });

        chkVencimiento.setText("Vencimiento");
        chkVencimiento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkVencimientoActionPerformed(evt);
            }
        });

        chkReunion.setText("Reunion");
        chkReunion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkReunionActionPerformed(evt);
            }
        });

        cmbProyectos.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cmbProyectos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbProyectosActionPerformed(evt);
            }
        });

        jLabel1.setText("Proyecto");

        jMFile.setText("Archivo");

        jMISession.setText("Cerrar sesión");
        jMISession.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMISessionActionPerformed(evt);
            }
        });
        jMFile.add(jMISession);

        jMISalir.setText("Salir");
        jMISalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMISalirActionPerformed(evt);
            }
        });
        jMFile.add(jMISalir);

        jMenuBar1.add(jMFile);

        jmGestion.setText("Administración");

        mnuAcciones.setText("Acciones");

        mnuAccionesNueva.setText("Agregar acción");
        mnuAccionesNueva.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mnuAccionesNuevaActionPerformed(evt);
            }
        });
        mnuAcciones.add(mnuAccionesNueva);

        jmGestion.add(mnuAcciones);

        jmProyectos.setText("Proyectos");

        jminewProyect.setText("Nuevo proyecto");
        jminewProyect.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jminewProyectActionPerformed(evt);
            }
        });
        jmProyectos.add(jminewProyect);

        jmGestion.add(jmProyectos);

        jMUsuarios.setText("Usuarios");
        jMUsuarios.setEnabled(false);

        jMIVerUsuarios.setText("Administrar usuarios");
        jMIVerUsuarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIVerUsuariosActionPerformed(evt);
            }
        });
        jMUsuarios.add(jMIVerUsuarios);

        jmGestion.add(jMUsuarios);

        jMenuBar1.add(jmGestion);

        jMSalidas.setText("Salidas");

        jMExportar.setText("Exportar");

        jMIExcel.setText("Exportar tabla actual a Excel...");
        jMIExcel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIExcelActionPerformed(evt);
            }
        });
        jMExportar.add(jMIExcel);

        jMIExportarTodas.setText("Exportar todas las acciones registradas a Excel...");
        jMIExportarTodas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIExportarTodasActionPerformed(evt);
            }
        });
        jMExportar.add(jMIExportarTodas);

        jMSalidas.add(jMExportar);

        jMReportesMetricas.setText("Reportes y métricas");

        jMIReporte.setText("Reporte de acciones abiertas del proyecto");
        jMIReporte.setActionCommand("jMIReporteAccionesAbiertas");
        jMIReporte.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIReporteActionPerformed(evt);
            }
        });
        jMReportesMetricas.add(jMIReporte);
        jMIReporte.getAccessibleContext().setAccessibleName("jMIReporteAccionesAbiertas");

        jMIMétricas.setText("Métricas...");
        jMIMétricas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMIMétricasActionPerformed(evt);
            }
        });
        jMReportesMetricas.add(jMIMétricas);

        jMSalidas.add(jMReportesMetricas);
        jMReportesMetricas.getAccessibleContext().setAccessibleName("jmReportes");

        jMenuBar1.add(jMSalidas);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 496, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(btnActualizarAccion))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblOrdenar)
                                .addGap(4, 4, 4)
                                .addComponent(chkUsuario)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(chkVencimiento)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(chkReunion))
                            .addGroup(layout.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(lblFiltro)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(lblEstado1)
                                        .addComponent(lblEstado)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jrbAbiertas)
                                    .addComponent(jrbSi))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jrbNo)
                                    .addComponent(jrbTodas)))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(cmbProyectos, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(4, 4, 4)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmbProyectos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(chkUsuario)
                    .addComponent(chkVencimiento)
                    .addComponent(chkReunion)
                    .addComponent(lblOrdenar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 6, Short.MAX_VALUE)
                .addComponent(btnActualizarAccion)
                .addGap(1, 1, 1)
                .addComponent(lblFiltro)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jrbAbiertas)
                    .addComponent(jrbTodas)
                    .addComponent(lblEstado))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblEstado1)
                        .addComponent(jrbSi))
                    .addComponent(jrbNo))
                .addGap(27, 27, 27))
        );

        pack();
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        java.awt.Dimension dialogSize = getSize();
        setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
    }// </editor-fold>//GEN-END:initComponents

    private void mnuAccionesNuevaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuAccionesNuevaActionPerformed
        manejaAcciones.cargarAcciones(this.cmbProyectos.getSelectedIndex());
    }//GEN-LAST:event_mnuAccionesNuevaActionPerformed

    private void btnActualizarAccionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnActualizarAccionActionPerformed
        //Metodo el cual tras seleccionar una accion, abre una pantalla para actualizar su estado o añadirle un comentario
        IActualizarAccion iaa = new IActualizarAccion();
        boolean ban = false;
        if (grdAcciones.getSelectedRowCount() == 1) {
            if (grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 3).toString().equals("Sin Asignar")) {
                ban = true;
            }
            iaa.setProyecto(cmbProyectos.getSelectedItem().toString());
            iaa.setCodAccion(Integer.parseInt(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 0).toString()));
            iaa.setNombreAccion(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 1).toString());
            iaa.setFecha(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 4).toString());
            if (ban) {
                iaa.setUsuario("Sin Asignar");
            } else {
                iaa.setUsuario(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 3).toString());
            }
            iaa.setReunion(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 6).toString());
            iaa.setDescripcion(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 2).toString());

            if (grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 5).toString().equals("Abierta")) {
                iaa.setEstado(1);
            }
            if (grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 5).toString().equals("Cerrada")) {
                iaa.setEstado(0);
            }

            //iaa.setEstado(Integer.parseInt(grdAcciones.getValueAt(grdAcciones.getSelectedRow(), 5).toString()));
            iaa.setVisible(true);
        } else {
            JOptionPane.showMessageDialog(null, "Debe seleccionar solo una accion.");
        }

    }//GEN-LAST:event_btnActualizarAccionActionPerformed

    private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
        this.jrbTodas.setSelected(true);
        this.jrbSi.setSelected(true);
        this.cargarProyectos(this.sesion.getInstancia().getUsuarioLogueado().getNombreUsuario());
        if (this.gestionarInexsistenciaDeProyectos()) {
            this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
        }




    }//GEN-LAST:event_formWindowActivated

    private void jrbAbiertasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jrbAbiertasActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_jrbAbiertasActionPerformed

    private void jrbTodasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jrbTodasActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_jrbTodasActionPerformed

    private void jrbSiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jrbSiActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_jrbSiActionPerformed

    private void jrbNoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jrbNoActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_jrbNoActionPerformed

    private void chkUsuarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkUsuarioActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_chkUsuarioActionPerformed

    private void chkVencimientoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkVencimientoActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_chkVencimientoActionPerformed

    private void chkReunionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkReunionActionPerformed
        this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
    }//GEN-LAST:event_chkReunionActionPerformed

    private void jMIExcelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIExcelActionPerformed
        FileFilter ft = new FileNameExtensionFilter("Archivos de Excel", "xls");
        this.jFCExportarExcel.addChoosableFileFilter(ft);
        int valorRetorno = this.jFCExportarExcel.showSaveDialog(this);
        if (valorRetorno == javax.swing.JFileChooser.APPROVE_OPTION) {
            File archivo = this.jFCExportarExcel.getSelectedFile();
            try {
                ManejadorExportarAExcel exportador = new ManejadorExportarAExcel(archivo, this.grdAcciones, "Acciones");
                if (exportador.exportar()) {
                    JOptionPane.showMessageDialog(null, "Archivo guardado con éxito.");
                } else {
                    JOptionPane.showMessageDialog(null, "Ya existe un archivo con el nombre especificado.");
                    this.jMIExcelActionPerformed(evt);
                }
            } catch (java.io.IOException e) {
                JOptionPane.showMessageDialog(null, "Error al guardar el archivo.");
            } catch (jxl.write.WriteException ex) {
                JOptionPane.showMessageDialog(null, "Error al guardar el archivo.");
            }
        }

    }//GEN-LAST:event_jMIExcelActionPerformed

    private void cmbProyectosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbProyectosActionPerformed
        if (this.cmbProyectos.getSelectedItem() != null) {
            this.cargarTabla(this.pasarOrden(), this.getRadioEstado(), this.getRadioUsuario());
        }
    }//GEN-LAST:event_cmbProyectosActionPerformed

    private void jMIVerUsuariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIVerUsuariosActionPerformed
        IUsuarios iu = new IUsuarios();
        iu.setVisible(true);
        iu.toFront();
    }//GEN-LAST:event_jMIVerUsuariosActionPerformed

    private void jMIReporteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIReporteActionPerformed
        String proyecto = this.cmbProyectos.getSelectedItem().toString();
        System.out.println("Este es el proyecto en cuestión " + proyecto);
        manejaAcciones.traerReporte(proyecto);        // TODO add your handling code here:
    }//GEN-LAST:event_jMIReporteActionPerformed

    private void jminewProyectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jminewProyectActionPerformed
        IAgregarProyecto iap = new IAgregarProyecto();
        iap.setVisible(true);
        iap.toFront();
    }//GEN-LAST:event_jminewProyectActionPerformed

    private void jMIMétricasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIMétricasActionPerformed

        IMetricas iMetricas = new IMetricas();
        iMetricas.setVisible(true);
        iMetricas.toFront();
    }//GEN-LAST:event_jMIMétricasActionPerformed

    private void jMIExportarTodasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMIExportarTodasActionPerformed
        FileFilter ft = new FileNameExtensionFilter("Archivos de Excel", "xls");
        this.jFCExportarExcel.addChoosableFileFilter(ft);
        int valorRetorno = this.jFCExportarExcel.showSaveDialog(this);
        if (valorRetorno == javax.swing.JFileChooser.APPROVE_OPTION) {
            File archivo = this.jFCExportarExcel.getSelectedFile();
            javax.swing.JTable tabla = new javax.swing.JTable(manejaAcciones.cargarTablaConTodasLasAccionesParaExportarAExcel());
            try {
                ManejadorExportarAExcel exportador = new ManejadorExportarAExcel(archivo, tabla, "Acciones");
                if (exportador.exportar()) {
                    JOptionPane.showMessageDialog(null, "Archivo guardado con éxito.");
                } else {
                    JOptionPane.showMessageDialog(null, "Ya existe un archivo con el nombre especificado.");
                    this.jMIExportarTodasActionPerformed(evt);
                }
            } catch (java.io.IOException e) {
                JOptionPane.showMessageDialog(null, "Error al guardar el archivo.");
            } catch (jxl.write.WriteException ex) {
                JOptionPane.showMessageDialog(null, "Error al guardar el archivo.");
            }
        }
    }//GEN-LAST:event_jMIExportarTodasActionPerformed

    private void jMISalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMISalirActionPerformed
        System.exit(0);
    }//GEN-LAST:event_jMISalirActionPerformed

    private void jMISessionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMISessionActionPerformed
        ILogin log = new ILogin();
        log.setVisible(true);
        log.toFront();
        this.dispose();
        sesion.desloguear();
    }//GEN-LAST:event_jMISessionActionPerformed

    /**
     * @param args the command line arguments
     */
    public void cargarTabla(int[] orden, int estado, int usuario) {
        DefaultTableModel modelo = new DefaultTableModel();
        if (cmbProyectos.getItemCount() > 0) {
            modelo = (manejaAcciones.cargarTabla(orden, estado, usuario, this.cmbProyectos.getSelectedItem().toString()));
        }
        this.grdAcciones.setModel(modelo);

    }
    /*
     * este metodo se usa para saber que raio buton del estado esta sleecionado
     * 0 todas 1 abierta
     */

    public int getRadioEstado() {
        if (this.jrbAbiertas.isSelected()) {
            return 1;
        } else {
            return 0;
        }
    }
    /*
     * este metodo se usa para saber que radio buton del usuario esta
     * sleecionado 0 No 1 Si, para filtrar por el mismo
     */

    public int getRadioUsuario() {
        if (this.jrbSi.isSelected()) {
            return 1;
        } else {
            return 0;
        }
    }
    /*
     * este metodo devuelve un vector que tiene los valores de los chekbox de
     * orden
     */

    public int[] pasarOrden() {
        int[] param = new int[3];
        if (this.chkUsuario.isSelected()) {
            param[0] = 1;
        } else {
            param[0] = 0;
        }
        if (this.chkVencimiento.isSelected()) {
            param[1] = 1;
        } else {
            param[1] = 0;
        }
        if (this.chkReunion.isSelected()) {
            param[2] = 1;
        } else {
            param[2] = 0;
        }

        return param;

    }

    public void cargarProyectos(String usuario) {

        this.cmbProyectos.removeAllItems();
        Iterator iter = manejaAcciones.CargarProyectos(usuario);
        while (iter.hasNext()) {
            Proyecto proy = (Proyecto) iter.next();
            this.cmbProyectos.addItem(proy.getNombre());

        }
    }
    //Este metodo verifica si no hay proyecto cargados y en ese caso no permite ni agregar acciones, ni actualizarlas

    public boolean gestionarInexsistenciaDeProyectos() {
        if (this.cmbProyectos.getModel().getSize() < 1) {
            this.btnActualizarAccion.setEnabled(false);
            this.mnuAcciones.setEnabled(false);
            this.jMReportesMetricas.setEnabled(false);
            // JOptionPane.showMessageDialog(null, "Como no hay proyectos cargados para este usuario, se desabilitaron algunas funciones","Advertencia",JOptionPane.INFORMATION_MESSAGE);
            return false;
        } else {
            this.btnActualizarAccion.setEnabled(true);
            this.mnuAcciones.setEnabled(true);
            this.jMReportesMetricas.setEnabled(true);
            return true;
        }

    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnActualizarAccion;
    private javax.swing.ButtonGroup btngrpEstado;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.ButtonGroup buttonGroup2;
    private javax.swing.ButtonGroup buttonGroup3;
    private javax.swing.ButtonGroup buttonGroup4;
    private javax.swing.ButtonGroup buttonGroup5;
    private javax.swing.ButtonGroup buttonGroup6;
    private javax.swing.JCheckBox chkReunion;
    private javax.swing.JCheckBox chkUsuario;
    private javax.swing.JCheckBox chkVencimiento;
    private javax.swing.JComboBox cmbProyectos;
    private javax.swing.JTable grdAcciones;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JFileChooser jFCExportarExcel;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMExportar;
    private javax.swing.JMenu jMFile;
    private javax.swing.JMenuItem jMIExcel;
    private javax.swing.JMenuItem jMIExportarTodas;
    private javax.swing.JMenuItem jMIMétricas;
    private javax.swing.JMenuItem jMIReporte;
    private javax.swing.JMenuItem jMISalir;
    private javax.swing.JMenuItem jMISession;
    private javax.swing.JMenuItem jMIVerUsuarios;
    private javax.swing.JMenu jMReportesMetricas;
    private javax.swing.JMenu jMSalidas;
    private javax.swing.JMenu jMUsuarios;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JMenu jmGestion;
    private javax.swing.JMenu jmProyectos;
    private javax.swing.JMenuItem jminewProyect;
    private javax.swing.JRadioButton jrbAbiertas;
    private javax.swing.JRadioButton jrbNo;
    private javax.swing.JRadioButton jrbSi;
    private javax.swing.JRadioButton jrbTodas;
    private javax.swing.JLabel lblEstado;
    private javax.swing.JLabel lblEstado1;
    private javax.swing.JLabel lblFiltro;
    private javax.swing.JLabel lblOrdenar;
    private javax.swing.JMenu mnuAcciones;
    private javax.swing.JMenuItem mnuAccionesNueva;
    // End of variables declaration//GEN-END:variables
}
